/**************************************************************************
 * @name:  001_GetFileSize.c
 * @brief: 这是用于计算某个文本大小的代码案例
 * @date:  2025/01/06
 * @author: boluzs@163.com
 * @note:
 *          1. 可以选择以追加的方式打开文件
 *          2. 为了能够计算文件的准确大小，所以应该以二进制方式打开
 *          3. 如果以追加方式打开文件，则文件的位置指示器默认是在文件末尾
 *          4. 所以调用ftell函数计算文件位置指示器相较于文件开头的字节数量
 *          5. 文件名称需要通过命令行传递，所以需要使用带参数的main函数，有两个argc+argv
 *
 * @version: 1.0.0
 * @Copyright (c) 2025 by boluzs@163.com, All Rights Reserved.
 **************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>

int main(int argc, char const *argv[])
{
    // 1. 判断参数有效性
    if (argc != 2)
    {
        printf("argc is error!\n");
        exit(-1);
    }

    // 2.利用fopen函数追加模式打开一个文件
    FILE *fp = fopen(argv[1], "rb");
    if (NULL == fp)
    {
        fprintf(stderr, "open error, errno= %d,%s!\n", errno, strerror(errno));
    }

    // 3.偏移到最后
    fseek(fp, 0, SEEK_END);
    printf("[%s]文件大小为 %ld bytes\n", argv[1], ftell(fp));

    fclose(fp);

    return 0;
}
